﻿/**	@file		pretty_image.h
 *	@date		(2006-06-22 19:16:38)/(2012-06-24 20:11:55)
 *-----------------------------------------------------------------------------
 *	@version	1.0.12.13
 *	@author		Nick Shallery	(nicknide@gmail.com)
 *	@copyright	YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.
 *-----------------------------------------------------------------------------
**/

#if			!defined(__LXUT__MOD__PRETTY_IMAGE__NICK__K_IN_G__)
#define		__LXUT__MOD__PRETTY_IMAGE__NICK__K_IN_G__
//==============================================================================
//--------------------------------------------------------------------------

#if			!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)
	#include	"../../lolix/lolix_type.h"
#endif	//	!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)

#if			!defined(__LXUT__RSRC__RSRC_POND__NICK__K_IN_G__)
	#include	"../rsrc/rsrc_pond.h"
#endif	//	!defined(__LXUT__RSRC__RSRC_POND__NICK__K_IN_G__)


namespace lolix{namespace pretty{class render_texture;}}
#if			LOLIX_CFG__SUPPORT_CPP_11
	namespace lolix{namespace pretty{enum ENUM_PIXEL_TYPE : lx_u32;}}
#else	//	LOLIX_CFG__SUPPORT_CPP_11
	namespace lolix{namespace pretty{enum ENUM_PIXEL_TYPE;}}
#endif	//	LOLIX_CFG__SUPPORT_CPP_11

namespace lolix{namespace sola{template<typename> class rect;template<size_type, typename> class vec;}}
namespace lxut{namespace mod{class	pretty_image;}}

class	LOLIX_NO_VTABLE	lxut::mod::pretty_image
	: public lolix::itf
{
public:
	LOLIX_DECLARE_ITF(lxut::mod::pretty_image, lolix::itf, (0x7014ba0a, 0x1e82494f, 0xa8449b0c, 0xabacf66c));
	class	rsrc_fetch_type;
	LOLIX_INTERFACE(fill_tex	, lolix::LOLIX_RETNV	, (lolix::pretty::render_texture* in_ptr)const);
	LOLIX_INTERFACE(load_tex	, lolix::LOLIX_RETNV	, (lolix::pretty::render_texture* in_ptr));
	LOLIX_INTERFACE(clear		, lolix::LOLIX_RETNV	, (void));
	LOLIX_INTERFACE(get_size	, lolix::LOLIX_RETNV	, (lolix::lx_u32* width, lolix::lx_u32* heigh));
	LOLIX_INTERFACE(get_prop	, lolix::LOLIX_RETNV	, (lolix::pretty::ENUM_PIXEL_TYPE* fmt, lolix::ENUM_VALUE_TYPE* elm_type, lolix::size_type lev)const);
	LOLIX_INTERFACE(copy		, lolix::LOLIX_RETNV	, (lxut::mod::pretty_image* dst, lolix::sola::rect<lolix::difference_type> const* src_area, lolix::sola::vec<2, lolix::size_type> const* dst_pos)const);
};

class	LOLIX_NO_VTABLE	lxut::mod::pretty_image::rsrc_fetch_type
	: public lxut::rsrc::rsrc_fetch
{
public:
	LOLIX_DECLARE_ITF(lxut::mod::pretty_image::rsrc_fetch_type, lxut::rsrc::rsrc_fetch, (0x8655b84e, 0x886642ff, 0x98ab4464, 0x064f294f));
};




//--------------------------------------------------------------------------
//==============================================================================
#endif	//	!defined(__LXUT__MOD__PRETTY_IMAGE__NICK__K_IN_G__)
